package controlador;

import java.util.Iterator;
import java.util.LinkedList;
import java.util.List;

import entity.EmpresaBD;
import fachade.PrincipalFachade;

import vo.CampaniaVO;
import vo.EmpresaVO;
import vo.NombreCampaniaVO;

import negocio.Campania;
import negocio.Cliente;
import negocio.Empresa;

public class ControladorABMEmpresas {
	
	private List<Empresa> empresas;
	private List<EmpresaVO> empresasVO;
	
	private static ControladorABMEmpresas instance = null;

	public static ControladorABMEmpresas getInstance() {
	if (instance == null) {
	instance = new ControladorABMEmpresas();
	}
	return instance; 
	}
	
	private ControladorABMEmpresas(){
		empresas= null;
	}

	public List<Empresa> getEmpresas() {
		return PrincipalFachade.getInstance().getiEmpresaFachade().getEmpresas();
	}
	
	public List<EmpresaVO> getEmpresasVO() {
		empresasVO = new LinkedList<EmpresaVO>();
		
		for (Iterator iterator = getEmpresas().iterator(); iterator.hasNext();) {
			Empresa empresa = (Empresa) iterator.next();
			empresasVO.add(new EmpresaVO(empresa));
		}
		return empresasVO;
	}
	
	public List<EmpresaVO> getClientesVO(){
		
		List<EmpresaVO> clientes = new LinkedList<EmpresaVO>();
		
		for (Iterator iterator = getEmpresasVO().iterator(); iterator.hasNext();) {
			EmpresaVO empresaVO = (EmpresaVO) iterator.next();
			if (empresaVO.getTipoEmpresa().equalsIgnoreCase("CLIENTE"))
				clientes.add(empresaVO);
			
		}
		return clientes;
	}

	public EmpresaVO getEmpresaByName(String nombre){
		
		Empresa empresa = PrincipalFachade.getInstance().getiEmpresaFachade().getEmpresaByName(nombre);
		
		return new EmpresaVO(empresa);
	}
	
	public void setEmpresas(List<Empresa> empresas) {
		this.empresas = empresas;
	}
	
	public List<Campania> getCampanias(EmpresaVO empresaVO) throws Exception{
		
		Empresa e = PrincipalFachade.getInstance().getiEmpresaFachade().getEmpresaByName(empresaVO.getRazonSocial()) ;
		List<Campania> campanias = PrincipalFachade.getInstance().getCampaniasEmpresa(e);
		
		return campanias;
	}
	
public List<CampaniaVO> getCampaniasVO(EmpresaVO empresaVO) throws Exception{
		
		List<Campania> campanias = getCampanias(empresaVO);
		List<CampaniaVO> campaniasVO = new LinkedList<CampaniaVO>();
		
		for (Iterator iterator = campanias.iterator(); iterator.hasNext();) {
			Campania campania = (Campania) iterator.next();
			
			campaniasVO.add(new CampaniaVO(campania));
		}
		
		return campaniasVO;
	}

public int getCampaniasByName(EmpresaVO evo, String nombreCampania) {
	// TODO Auto-generated method stub
	Campania c =PrincipalFachade.getInstance().getICampaniasFachade().getCampaniaByName(evo,nombreCampania); 
	
	return c.getCodCampania();
}


	
	

}
